// $ANTLR 3.4 C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g 2012-10-24 11:27:55

package PL.prac6;


import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings({"all", "warnings", "unchecked"})
public class CParser extends Parser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "ACORCHETE", "ALLAVE", "AND", "APARENTESIS", "ASTERISCO", "BARRA", "BARRAS", "BLANCO", "BREAK", "CADENA", "CARACTER", "CCORCHETE", "CHAR", "CLLAVE", "COMA", "COMENTARIO", "COMILLA", "COMILLAS", "COMPARADORES", "CPARENTESIS", "DIGITO", "DOSPUNTOS", "ESPACIO", "FLOAT", "IDENT", "IF", "IGUAL", "INT", "INTERROGANTE", "LETRA", "LINEA_COMENTARIO", "MAIN", "MAS", "MENOS", "NOT", "NUEVA_LINEA", "NUMERO", "OR", "SEPARADOR", "TIPO", "VOID", "WHILE"
    };

    public static final int EOF=-1;
    public static final int ACORCHETE=4;
    public static final int ALLAVE=5;
    public static final int AND=6;
    public static final int APARENTESIS=7;
    public static final int ASTERISCO=8;
    public static final int BARRA=9;
    public static final int BARRAS=10;
    public static final int BLANCO=11;
    public static final int BREAK=12;
    public static final int CADENA=13;
    public static final int CARACTER=14;
    public static final int CCORCHETE=15;
    public static final int CHAR=16;
    public static final int CLLAVE=17;
    public static final int COMA=18;
    public static final int COMENTARIO=19;
    public static final int COMILLA=20;
    public static final int COMILLAS=21;
    public static final int COMPARADORES=22;
    public static final int CPARENTESIS=23;
    public static final int DIGITO=24;
    public static final int DOSPUNTOS=25;
    public static final int ESPACIO=26;
    public static final int FLOAT=27;
    public static final int IDENT=28;
    public static final int IF=29;
    public static final int IGUAL=30;
    public static final int INT=31;
    public static final int INTERROGANTE=32;
    public static final int LETRA=33;
    public static final int LINEA_COMENTARIO=34;
    public static final int MAIN=35;
    public static final int MAS=36;
    public static final int MENOS=37;
    public static final int NOT=38;
    public static final int NUEVA_LINEA=39;
    public static final int NUMERO=40;
    public static final int OR=41;
    public static final int SEPARADOR=42;
    public static final int TIPO=43;
    public static final int VOID=44;
    public static final int WHILE=45;

    // delegates
    public Parser[] getDelegates() {
        return new Parser[] {};
    }

    // delegators


    public CParser(TokenStream input) {
        this(input, new RecognizerSharedState());
    }
    public CParser(TokenStream input, RecognizerSharedState state) {
        super(input, state);
    }

    public String[] getTokenNames() { return CParser.tokenNames; }
    public String getGrammarFileName() { return "C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g"; }



    // $ANTLR start "entrada"
    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:16:1: entrada : cabecera EOF ;
    public final void entrada() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:16:8: ( cabecera EOF )
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:16:10: cabecera EOF
            {
            pushFollow(FOLLOW_cabecera_in_entrada46);
            cabecera();

            state._fsp--;


            match(input,EOF,FOLLOW_EOF_in_entrada48); 

            }

        }
        catch (RecognitionException e) {
          throw e;}
         
        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "entrada"



    // $ANTLR start "cabecera"
    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:18:1: cabecera : ( VOID | TIPO ) ( IDENT | MAIN ) APARENTESIS ( VOID | ( llamada_variable ( COMA llamada_variable )* ) ) CPARENTESIS ALLAVE ( cuerpo )* CLLAVE ;
    public final void cabecera() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:18:9: ( ( VOID | TIPO ) ( IDENT | MAIN ) APARENTESIS ( VOID | ( llamada_variable ( COMA llamada_variable )* ) ) CPARENTESIS ALLAVE ( cuerpo )* CLLAVE )
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:18:11: ( VOID | TIPO ) ( IDENT | MAIN ) APARENTESIS ( VOID | ( llamada_variable ( COMA llamada_variable )* ) ) CPARENTESIS ALLAVE ( cuerpo )* CLLAVE
            {
            if ( (input.LA(1) >= TIPO && input.LA(1) <= VOID) ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            if ( input.LA(1)==IDENT||input.LA(1)==MAIN ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            match(input,APARENTESIS,FOLLOW_APARENTESIS_in_cabecera66); 

            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:18:47: ( VOID | ( llamada_variable ( COMA llamada_variable )* ) )
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==VOID) ) {
                alt2=1;
            }
            else if ( (LA2_0==TIPO) ) {
                alt2=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;

            }
            switch (alt2) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:18:48: VOID
                    {
                    match(input,VOID,FOLLOW_VOID_in_cabecera69); 

                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:18:55: ( llamada_variable ( COMA llamada_variable )* )
                    {
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:18:55: ( llamada_variable ( COMA llamada_variable )* )
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:18:56: llamada_variable ( COMA llamada_variable )*
                    {
                    pushFollow(FOLLOW_llamada_variable_in_cabecera74);
                    llamada_variable();

                    state._fsp--;


                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:18:73: ( COMA llamada_variable )*
                    loop1:
                    do {
                        int alt1=2;
                        int LA1_0 = input.LA(1);

                        if ( (LA1_0==COMA) ) {
                            alt1=1;
                        }


                        switch (alt1) {
                    	case 1 :
                    	    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:18:74: COMA llamada_variable
                    	    {
                    	    match(input,COMA,FOLLOW_COMA_in_cabecera77); 

                    	    pushFollow(FOLLOW_llamada_variable_in_cabecera79);
                    	    llamada_variable();

                    	    state._fsp--;


                    	    }
                    	    break;

                    	default :
                    	    break loop1;
                        }
                    } while (true);


                    }


                    }
                    break;

            }


            match(input,CPARENTESIS,FOLLOW_CPARENTESIS_in_cabecera85); 

            match(input,ALLAVE,FOLLOW_ALLAVE_in_cabecera87); 

            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:18:119: ( cuerpo )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==BREAK||(LA3_0 >= IDENT && LA3_0 <= IF)||LA3_0==TIPO||LA3_0==WHILE) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:18:119: cuerpo
            	    {
            	    pushFollow(FOLLOW_cuerpo_in_cabecera89);
            	    cuerpo();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);


            match(input,CLLAVE,FOLLOW_CLLAVE_in_cabecera92); 

            }

        }
        catch (RecognitionException e) {
          throw e;}
         
        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "cabecera"



    // $ANTLR start "llamada_variable"
    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:19:1: llamada_variable : TIPO ( ASTERISCO )? IDENT ( ACORCHETE CCORCHETE )? ;
    public final void llamada_variable() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:19:17: ( TIPO ( ASTERISCO )? IDENT ( ACORCHETE CCORCHETE )? )
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:19:19: TIPO ( ASTERISCO )? IDENT ( ACORCHETE CCORCHETE )?
            {
            match(input,TIPO,FOLLOW_TIPO_in_llamada_variable98); 

            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:19:24: ( ASTERISCO )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==ASTERISCO) ) {
                alt4=1;
            }
            switch (alt4) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:19:25: ASTERISCO
                    {
                    match(input,ASTERISCO,FOLLOW_ASTERISCO_in_llamada_variable101); 

                    }
                    break;

            }


            match(input,IDENT,FOLLOW_IDENT_in_llamada_variable105); 

            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:19:43: ( ACORCHETE CCORCHETE )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==ACORCHETE) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:19:44: ACORCHETE CCORCHETE
                    {
                    match(input,ACORCHETE,FOLLOW_ACORCHETE_in_llamada_variable108); 

                    match(input,CCORCHETE,FOLLOW_CCORCHETE_in_llamada_variable110); 

                    }
                    break;

            }


            }

        }
        catch (RecognitionException e) {
          throw e;}
         
        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "llamada_variable"



    // $ANTLR start "operacion"
    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:20:1: operacion : ( IDENT | NUMERO ) ( ( MAS | MENOS | ASTERISCO | BARRA ) ( IDENT | NUMERO ) ) ;
    public final void operacion() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:20:10: ( ( IDENT | NUMERO ) ( ( MAS | MENOS | ASTERISCO | BARRA ) ( IDENT | NUMERO ) ) )
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:20:12: ( IDENT | NUMERO ) ( ( MAS | MENOS | ASTERISCO | BARRA ) ( IDENT | NUMERO ) )
            {
            if ( input.LA(1)==IDENT||input.LA(1)==NUMERO ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:20:27: ( ( MAS | MENOS | ASTERISCO | BARRA ) ( IDENT | NUMERO ) )
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:20:28: ( MAS | MENOS | ASTERISCO | BARRA ) ( IDENT | NUMERO )
            {
            if ( (input.LA(1) >= ASTERISCO && input.LA(1) <= BARRA)||(input.LA(1) >= MAS && input.LA(1) <= MENOS) ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            if ( input.LA(1)==IDENT||input.LA(1)==NUMERO ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }


            }

        }
        catch (RecognitionException e) {
          throw e;}
         
        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "operacion"



    // $ANTLR start "comparacion"
    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:21:1: comparacion : APARENTESIS reglas ( ( AND | OR ) reglas )* CPARENTESIS ;
    public final void comparacion() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:21:12: ( APARENTESIS reglas ( ( AND | OR ) reglas )* CPARENTESIS )
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:21:13: APARENTESIS reglas ( ( AND | OR ) reglas )* CPARENTESIS
            {
            match(input,APARENTESIS,FOLLOW_APARENTESIS_in_comparacion145); 

            pushFollow(FOLLOW_reglas_in_comparacion147);
            reglas();

            state._fsp--;


            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:21:32: ( ( AND | OR ) reglas )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==AND||LA6_0==OR) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:21:33: ( AND | OR ) reglas
            	    {
            	    if ( input.LA(1)==AND||input.LA(1)==OR ) {
            	        input.consume();
            	        state.errorRecovery=false;
            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        throw mse;
            	    }


            	    pushFollow(FOLLOW_reglas_in_comparacion158);
            	    reglas();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop6;
                }
            } while (true);


            match(input,CPARENTESIS,FOLLOW_CPARENTESIS_in_comparacion162); 

            }

        }
        catch (RecognitionException e) {
          throw e;}
         
        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "comparacion"



    // $ANTLR start "reglas"
    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:22:1: reglas : ( ( ( IDENT | NUMERO | operacion ) COMPARADORES ( IDENT | NUMERO | operacion ) ) | ( NOT )? IDENT | cond_aritmetico ) ;
    public final void reglas() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:22:7: ( ( ( ( IDENT | NUMERO | operacion ) COMPARADORES ( IDENT | NUMERO | operacion ) ) | ( NOT )? IDENT | cond_aritmetico ) )
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:22:8: ( ( ( IDENT | NUMERO | operacion ) COMPARADORES ( IDENT | NUMERO | operacion ) ) | ( NOT )? IDENT | cond_aritmetico )
            {
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:22:8: ( ( ( IDENT | NUMERO | operacion ) COMPARADORES ( IDENT | NUMERO | operacion ) ) | ( NOT )? IDENT | cond_aritmetico )
            int alt10=3;
            switch ( input.LA(1) ) {
            case IDENT:
                {
                switch ( input.LA(2) ) {
                case COMPARADORES:
                    {
                    int LA10_4 = input.LA(3);

                    if ( (LA10_4==NUMERO) ) {
                        int LA10_5 = input.LA(4);

                        if ( (LA10_5==INTERROGANTE) ) {
                            alt10=3;
                        }
                        else if ( (LA10_5==AND||(LA10_5 >= ASTERISCO && LA10_5 <= BARRA)||LA10_5==CPARENTESIS||(LA10_5 >= MAS && LA10_5 <= MENOS)||LA10_5==OR) ) {
                            alt10=1;
                        }
                        else {
                            NoViableAltException nvae =
                                new NoViableAltException("", 10, 5, input);

                            throw nvae;

                        }
                    }
                    else if ( (LA10_4==IDENT) ) {
                        alt10=1;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 10, 4, input);

                        throw nvae;

                    }
                    }
                    break;
                case ASTERISCO:
                case BARRA:
                case MAS:
                case MENOS:
                    {
                    alt10=1;
                    }
                    break;
                case AND:
                case CPARENTESIS:
                case OR:
                    {
                    alt10=2;
                    }
                    break;
                default:
                    NoViableAltException nvae =
                        new NoViableAltException("", 10, 1, input);

                    throw nvae;

                }

                }
                break;
            case NUMERO:
                {
                alt10=1;
                }
                break;
            case NOT:
                {
                alt10=2;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 10, 0, input);

                throw nvae;

            }

            switch (alt10) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:22:9: ( ( IDENT | NUMERO | operacion ) COMPARADORES ( IDENT | NUMERO | operacion ) )
                    {
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:22:9: ( ( IDENT | NUMERO | operacion ) COMPARADORES ( IDENT | NUMERO | operacion ) )
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:22:10: ( IDENT | NUMERO | operacion ) COMPARADORES ( IDENT | NUMERO | operacion )
                    {
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:22:10: ( IDENT | NUMERO | operacion )
                    int alt7=3;
                    int LA7_0 = input.LA(1);

                    if ( (LA7_0==IDENT) ) {
                        int LA7_1 = input.LA(2);

                        if ( (LA7_1==COMPARADORES) ) {
                            alt7=1;
                        }
                        else if ( ((LA7_1 >= ASTERISCO && LA7_1 <= BARRA)||(LA7_1 >= MAS && LA7_1 <= MENOS)) ) {
                            alt7=3;
                        }
                        else {
                            NoViableAltException nvae =
                                new NoViableAltException("", 7, 1, input);

                            throw nvae;

                        }
                    }
                    else if ( (LA7_0==NUMERO) ) {
                        int LA7_2 = input.LA(2);

                        if ( (LA7_2==COMPARADORES) ) {
                            alt7=2;
                        }
                        else if ( ((LA7_2 >= ASTERISCO && LA7_2 <= BARRA)||(LA7_2 >= MAS && LA7_2 <= MENOS)) ) {
                            alt7=3;
                        }
                        else {
                            NoViableAltException nvae =
                                new NoViableAltException("", 7, 2, input);

                            throw nvae;

                        }
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 7, 0, input);

                        throw nvae;

                    }
                    switch (alt7) {
                        case 1 :
                            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:22:11: IDENT
                            {
                            match(input,IDENT,FOLLOW_IDENT_in_reglas170); 

                            }
                            break;
                        case 2 :
                            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:22:18: NUMERO
                            {
                            match(input,NUMERO,FOLLOW_NUMERO_in_reglas173); 

                            }
                            break;
                        case 3 :
                            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:22:25: operacion
                            {
                            pushFollow(FOLLOW_operacion_in_reglas175);
                            operacion();

                            state._fsp--;


                            }
                            break;

                    }


                    match(input,COMPARADORES,FOLLOW_COMPARADORES_in_reglas178); 

                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:22:49: ( IDENT | NUMERO | operacion )
                    int alt8=3;
                    int LA8_0 = input.LA(1);

                    if ( (LA8_0==IDENT) ) {
                        int LA8_1 = input.LA(2);

                        if ( (LA8_1==AND||LA8_1==CPARENTESIS||LA8_1==OR) ) {
                            alt8=1;
                        }
                        else if ( ((LA8_1 >= ASTERISCO && LA8_1 <= BARRA)||(LA8_1 >= MAS && LA8_1 <= MENOS)) ) {
                            alt8=3;
                        }
                        else {
                            NoViableAltException nvae =
                                new NoViableAltException("", 8, 1, input);

                            throw nvae;

                        }
                    }
                    else if ( (LA8_0==NUMERO) ) {
                        int LA8_2 = input.LA(2);

                        if ( (LA8_2==AND||LA8_2==CPARENTESIS||LA8_2==OR) ) {
                            alt8=2;
                        }
                        else if ( ((LA8_2 >= ASTERISCO && LA8_2 <= BARRA)||(LA8_2 >= MAS && LA8_2 <= MENOS)) ) {
                            alt8=3;
                        }
                        else {
                            NoViableAltException nvae =
                                new NoViableAltException("", 8, 2, input);

                            throw nvae;

                        }
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 8, 0, input);

                        throw nvae;

                    }
                    switch (alt8) {
                        case 1 :
                            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:22:50: IDENT
                            {
                            match(input,IDENT,FOLLOW_IDENT_in_reglas181); 

                            }
                            break;
                        case 2 :
                            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:22:57: NUMERO
                            {
                            match(input,NUMERO,FOLLOW_NUMERO_in_reglas184); 

                            }
                            break;
                        case 3 :
                            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:22:64: operacion
                            {
                            pushFollow(FOLLOW_operacion_in_reglas186);
                            operacion();

                            state._fsp--;


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:22:78: ( NOT )? IDENT
                    {
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:22:78: ( NOT )?
                    int alt9=2;
                    int LA9_0 = input.LA(1);

                    if ( (LA9_0==NOT) ) {
                        alt9=1;
                    }
                    switch (alt9) {
                        case 1 :
                            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:22:78: NOT
                            {
                            match(input,NOT,FOLLOW_NOT_in_reglas192); 

                            }
                            break;

                    }


                    match(input,IDENT,FOLLOW_IDENT_in_reglas195); 

                    }
                    break;
                case 3 :
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:22:90: cond_aritmetico
                    {
                    pushFollow(FOLLOW_cond_aritmetico_in_reglas198);
                    cond_aritmetico();

                    state._fsp--;


                    }
                    break;

            }


            }

        }
        catch (RecognitionException e) {
          throw e;}
         
        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "reglas"



    // $ANTLR start "cond_aritmetico"
    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:23:1: cond_aritmetico : IDENT COMPARADORES NUMERO INTERROGANTE NUMERO DOSPUNTOS NUMERO ;
    public final void cond_aritmetico() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:23:16: ( IDENT COMPARADORES NUMERO INTERROGANTE NUMERO DOSPUNTOS NUMERO )
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:23:18: IDENT COMPARADORES NUMERO INTERROGANTE NUMERO DOSPUNTOS NUMERO
            {
            match(input,IDENT,FOLLOW_IDENT_in_cond_aritmetico205); 

            match(input,COMPARADORES,FOLLOW_COMPARADORES_in_cond_aritmetico207); 

            match(input,NUMERO,FOLLOW_NUMERO_in_cond_aritmetico209); 

            match(input,INTERROGANTE,FOLLOW_INTERROGANTE_in_cond_aritmetico211); 

            match(input,NUMERO,FOLLOW_NUMERO_in_cond_aritmetico213); 

            match(input,DOSPUNTOS,FOLLOW_DOSPUNTOS_in_cond_aritmetico215); 

            match(input,NUMERO,FOLLOW_NUMERO_in_cond_aritmetico217); 

            }

        }
        catch (RecognitionException e) {
          throw e;}
         
        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "cond_aritmetico"



    // $ANTLR start "bucle"
    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:24:1: bucle : WHILE comparacion ;
    public final void bucle() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:24:6: ( WHILE comparacion )
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:24:8: WHILE comparacion
            {
            match(input,WHILE,FOLLOW_WHILE_in_bucle223); 

            pushFollow(FOLLOW_comparacion_in_bucle225);
            comparacion();

            state._fsp--;


            }

        }
        catch (RecognitionException e) {
          throw e;}
         
        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "bucle"



    // $ANTLR start "condicion"
    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:25:1: condicion : IF comparacion ;
    public final void condicion() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:25:10: ( IF comparacion )
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:25:12: IF comparacion
            {
            match(input,IF,FOLLOW_IF_in_condicion231); 

            pushFollow(FOLLOW_comparacion_in_condicion233);
            comparacion();

            state._fsp--;


            }

        }
        catch (RecognitionException e) {
          throw e;}
         
        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "condicion"



    // $ANTLR start "sentencia"
    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:26:1: sentencia : ( bucle | condicion ) ( ALLAVE ( cuerpo )+ CLLAVE | cuerpo ) ;
    public final void sentencia() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:26:10: ( ( bucle | condicion ) ( ALLAVE ( cuerpo )+ CLLAVE | cuerpo ) )
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:26:12: ( bucle | condicion ) ( ALLAVE ( cuerpo )+ CLLAVE | cuerpo )
            {
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:26:12: ( bucle | condicion )
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( (LA11_0==WHILE) ) {
                alt11=1;
            }
            else if ( (LA11_0==IF) ) {
                alt11=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 11, 0, input);

                throw nvae;

            }
            switch (alt11) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:26:13: bucle
                    {
                    pushFollow(FOLLOW_bucle_in_sentencia240);
                    bucle();

                    state._fsp--;


                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:26:19: condicion
                    {
                    pushFollow(FOLLOW_condicion_in_sentencia242);
                    condicion();

                    state._fsp--;


                    }
                    break;

            }


            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:26:30: ( ALLAVE ( cuerpo )+ CLLAVE | cuerpo )
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( (LA13_0==ALLAVE) ) {
                alt13=1;
            }
            else if ( (LA13_0==BREAK||(LA13_0 >= IDENT && LA13_0 <= IF)||LA13_0==TIPO||LA13_0==WHILE) ) {
                alt13=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 13, 0, input);

                throw nvae;

            }
            switch (alt13) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:26:31: ALLAVE ( cuerpo )+ CLLAVE
                    {
                    match(input,ALLAVE,FOLLOW_ALLAVE_in_sentencia246); 

                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:26:38: ( cuerpo )+
                    int cnt12=0;
                    loop12:
                    do {
                        int alt12=2;
                        int LA12_0 = input.LA(1);

                        if ( (LA12_0==BREAK||(LA12_0 >= IDENT && LA12_0 <= IF)||LA12_0==TIPO||LA12_0==WHILE) ) {
                            alt12=1;
                        }


                        switch (alt12) {
                    	case 1 :
                    	    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:26:38: cuerpo
                    	    {
                    	    pushFollow(FOLLOW_cuerpo_in_sentencia248);
                    	    cuerpo();

                    	    state._fsp--;


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt12 >= 1 ) break loop12;
                                EarlyExitException eee =
                                    new EarlyExitException(12, input);
                                throw eee;
                        }
                        cnt12++;
                    } while (true);


                    match(input,CLLAVE,FOLLOW_CLLAVE_in_sentencia251); 

                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:26:54: cuerpo
                    {
                    pushFollow(FOLLOW_cuerpo_in_sentencia254);
                    cuerpo();

                    state._fsp--;


                    }
                    break;

            }


            }

        }
        catch (RecognitionException e) {
          throw e;}
         
        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "sentencia"



    // $ANTLR start "cuerpo"
    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:27:1: cuerpo : ( sentencia | asignacion | definicion | llamada_funcion | BREAK SEPARADOR ) ;
    public final void cuerpo() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:27:7: ( ( sentencia | asignacion | definicion | llamada_funcion | BREAK SEPARADOR ) )
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:27:9: ( sentencia | asignacion | definicion | llamada_funcion | BREAK SEPARADOR )
            {
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:27:9: ( sentencia | asignacion | definicion | llamada_funcion | BREAK SEPARADOR )
            int alt14=5;
            switch ( input.LA(1) ) {
            case IF:
            case WHILE:
                {
                alt14=1;
                }
                break;
            case IDENT:
                {
                int LA14_2 = input.LA(2);

                if ( (LA14_2==IGUAL) ) {
                    alt14=2;
                }
                else if ( (LA14_2==APARENTESIS) ) {
                    alt14=4;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 14, 2, input);

                    throw nvae;

                }
                }
                break;
            case TIPO:
                {
                alt14=3;
                }
                break;
            case BREAK:
                {
                alt14=5;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 14, 0, input);

                throw nvae;

            }

            switch (alt14) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:27:10: sentencia
                    {
                    pushFollow(FOLLOW_sentencia_in_cuerpo262);
                    sentencia();

                    state._fsp--;


                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:27:22: asignacion
                    {
                    pushFollow(FOLLOW_asignacion_in_cuerpo266);
                    asignacion();

                    state._fsp--;


                    }
                    break;
                case 3 :
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:27:34: definicion
                    {
                    pushFollow(FOLLOW_definicion_in_cuerpo269);
                    definicion();

                    state._fsp--;


                    }
                    break;
                case 4 :
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:27:45: llamada_funcion
                    {
                    pushFollow(FOLLOW_llamada_funcion_in_cuerpo271);
                    llamada_funcion();

                    state._fsp--;


                    }
                    break;
                case 5 :
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:27:61: BREAK SEPARADOR
                    {
                    match(input,BREAK,FOLLOW_BREAK_in_cuerpo273); 

                    match(input,SEPARADOR,FOLLOW_SEPARADOR_in_cuerpo275); 

                    }
                    break;

            }


            }

        }
        catch (RecognitionException e) {
          throw e;}
         
        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "cuerpo"



    // $ANTLR start "asignacion"
    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:28:1: asignacion : IDENT IGUAL ( IDENT | NUMERO | CADENA | CARACTER ) ( ( MAS | MENOS | ASTERISCO | BARRA ) ( IDENT | NUMERO | CADENA | CARACTER ) )* SEPARADOR ;
    public final void asignacion() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:28:11: ( IDENT IGUAL ( IDENT | NUMERO | CADENA | CARACTER ) ( ( MAS | MENOS | ASTERISCO | BARRA ) ( IDENT | NUMERO | CADENA | CARACTER ) )* SEPARADOR )
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:28:13: IDENT IGUAL ( IDENT | NUMERO | CADENA | CARACTER ) ( ( MAS | MENOS | ASTERISCO | BARRA ) ( IDENT | NUMERO | CADENA | CARACTER ) )* SEPARADOR
            {
            match(input,IDENT,FOLLOW_IDENT_in_asignacion282); 

            match(input,IGUAL,FOLLOW_IGUAL_in_asignacion284); 

            if ( (input.LA(1) >= CADENA && input.LA(1) <= CARACTER)||input.LA(1)==IDENT||input.LA(1)==NUMERO ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:28:56: ( ( MAS | MENOS | ASTERISCO | BARRA ) ( IDENT | NUMERO | CADENA | CARACTER ) )*
            loop15:
            do {
                int alt15=2;
                int LA15_0 = input.LA(1);

                if ( ((LA15_0 >= ASTERISCO && LA15_0 <= BARRA)||(LA15_0 >= MAS && LA15_0 <= MENOS)) ) {
                    alt15=1;
                }


                switch (alt15) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:28:57: ( MAS | MENOS | ASTERISCO | BARRA ) ( IDENT | NUMERO | CADENA | CARACTER )
            	    {
            	    if ( (input.LA(1) >= ASTERISCO && input.LA(1) <= BARRA)||(input.LA(1) >= MAS && input.LA(1) <= MENOS) ) {
            	        input.consume();
            	        state.errorRecovery=false;
            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        throw mse;
            	    }


            	    if ( (input.LA(1) >= CADENA && input.LA(1) <= CARACTER)||input.LA(1)==IDENT||input.LA(1)==NUMERO ) {
            	        input.consume();
            	        state.errorRecovery=false;
            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        throw mse;
            	    }


            	    }
            	    break;

            	default :
            	    break loop15;
                }
            } while (true);


            match(input,SEPARADOR,FOLLOW_SEPARADOR_in_asignacion319); 

            }

        }
        catch (RecognitionException e) {
          throw e;}
         
        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "asignacion"



    // $ANTLR start "definicion"
    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:29:1: definicion : TIPO IDENT ( COMA IDENT ) SEPARADOR ;
    public final void definicion() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:29:11: ( TIPO IDENT ( COMA IDENT ) SEPARADOR )
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:29:13: TIPO IDENT ( COMA IDENT ) SEPARADOR
            {
            match(input,TIPO,FOLLOW_TIPO_in_definicion325); 

            match(input,IDENT,FOLLOW_IDENT_in_definicion327); 

            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:29:24: ( COMA IDENT )
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:29:25: COMA IDENT
            {
            match(input,COMA,FOLLOW_COMA_in_definicion330); 

            match(input,IDENT,FOLLOW_IDENT_in_definicion332); 

            }


            match(input,SEPARADOR,FOLLOW_SEPARADOR_in_definicion335); 

            }

        }
        catch (RecognitionException e) {
          throw e;}
         
        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "definicion"



    // $ANTLR start "llamada_funcion"
    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:1: llamada_funcion : IDENT APARENTESIS ( ( IDENT ( ACORCHETE ( NUMERO ) CCORCHETE )? | NUMERO | CADENA | CARACTER ) ( COMA ( IDENT ( ACORCHETE ( NUMERO ) CCORCHETE )? | NUMERO | CADENA | CARACTER ) )* )? CPARENTESIS SEPARADOR ;
    public final void llamada_funcion() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:16: ( IDENT APARENTESIS ( ( IDENT ( ACORCHETE ( NUMERO ) CCORCHETE )? | NUMERO | CADENA | CARACTER ) ( COMA ( IDENT ( ACORCHETE ( NUMERO ) CCORCHETE )? | NUMERO | CADENA | CARACTER ) )* )? CPARENTESIS SEPARADOR )
            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:18: IDENT APARENTESIS ( ( IDENT ( ACORCHETE ( NUMERO ) CCORCHETE )? | NUMERO | CADENA | CARACTER ) ( COMA ( IDENT ( ACORCHETE ( NUMERO ) CCORCHETE )? | NUMERO | CADENA | CARACTER ) )* )? CPARENTESIS SEPARADOR
            {
            match(input,IDENT,FOLLOW_IDENT_in_llamada_funcion341); 

            match(input,APARENTESIS,FOLLOW_APARENTESIS_in_llamada_funcion343); 

            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:36: ( ( IDENT ( ACORCHETE ( NUMERO ) CCORCHETE )? | NUMERO | CADENA | CARACTER ) ( COMA ( IDENT ( ACORCHETE ( NUMERO ) CCORCHETE )? | NUMERO | CADENA | CARACTER ) )* )?
            int alt21=2;
            int LA21_0 = input.LA(1);

            if ( ((LA21_0 >= CADENA && LA21_0 <= CARACTER)||LA21_0==IDENT||LA21_0==NUMERO) ) {
                alt21=1;
            }
            switch (alt21) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:37: ( IDENT ( ACORCHETE ( NUMERO ) CCORCHETE )? | NUMERO | CADENA | CARACTER ) ( COMA ( IDENT ( ACORCHETE ( NUMERO ) CCORCHETE )? | NUMERO | CADENA | CARACTER ) )*
                    {
                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:37: ( IDENT ( ACORCHETE ( NUMERO ) CCORCHETE )? | NUMERO | CADENA | CARACTER )
                    int alt17=4;
                    switch ( input.LA(1) ) {
                    case IDENT:
                        {
                        alt17=1;
                        }
                        break;
                    case NUMERO:
                        {
                        alt17=2;
                        }
                        break;
                    case CADENA:
                        {
                        alt17=3;
                        }
                        break;
                    case CARACTER:
                        {
                        alt17=4;
                        }
                        break;
                    default:
                        NoViableAltException nvae =
                            new NoViableAltException("", 17, 0, input);

                        throw nvae;

                    }

                    switch (alt17) {
                        case 1 :
                            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:38: IDENT ( ACORCHETE ( NUMERO ) CCORCHETE )?
                            {
                            match(input,IDENT,FOLLOW_IDENT_in_llamada_funcion347); 

                            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:43: ( ACORCHETE ( NUMERO ) CCORCHETE )?
                            int alt16=2;
                            int LA16_0 = input.LA(1);

                            if ( (LA16_0==ACORCHETE) ) {
                                alt16=1;
                            }
                            switch (alt16) {
                                case 1 :
                                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:44: ACORCHETE ( NUMERO ) CCORCHETE
                                    {
                                    match(input,ACORCHETE,FOLLOW_ACORCHETE_in_llamada_funcion349); 

                                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:54: ( NUMERO )
                                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:55: NUMERO
                                    {
                                    match(input,NUMERO,FOLLOW_NUMERO_in_llamada_funcion352); 

                                    }


                                    match(input,CCORCHETE,FOLLOW_CCORCHETE_in_llamada_funcion355); 

                                    }
                                    break;

                            }


                            }
                            break;
                        case 2 :
                            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:77: NUMERO
                            {
                            match(input,NUMERO,FOLLOW_NUMERO_in_llamada_funcion361); 

                            }
                            break;
                        case 3 :
                            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:85: CADENA
                            {
                            match(input,CADENA,FOLLOW_CADENA_in_llamada_funcion364); 

                            }
                            break;
                        case 4 :
                            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:92: CARACTER
                            {
                            match(input,CARACTER,FOLLOW_CARACTER_in_llamada_funcion366); 

                            }
                            break;

                    }


                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:102: ( COMA ( IDENT ( ACORCHETE ( NUMERO ) CCORCHETE )? | NUMERO | CADENA | CARACTER ) )*
                    loop20:
                    do {
                        int alt20=2;
                        int LA20_0 = input.LA(1);

                        if ( (LA20_0==COMA) ) {
                            alt20=1;
                        }


                        switch (alt20) {
                    	case 1 :
                    	    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:103: COMA ( IDENT ( ACORCHETE ( NUMERO ) CCORCHETE )? | NUMERO | CADENA | CARACTER )
                    	    {
                    	    match(input,COMA,FOLLOW_COMA_in_llamada_funcion370); 

                    	    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:108: ( IDENT ( ACORCHETE ( NUMERO ) CCORCHETE )? | NUMERO | CADENA | CARACTER )
                    	    int alt19=4;
                    	    switch ( input.LA(1) ) {
                    	    case IDENT:
                    	        {
                    	        alt19=1;
                    	        }
                    	        break;
                    	    case NUMERO:
                    	        {
                    	        alt19=2;
                    	        }
                    	        break;
                    	    case CADENA:
                    	        {
                    	        alt19=3;
                    	        }
                    	        break;
                    	    case CARACTER:
                    	        {
                    	        alt19=4;
                    	        }
                    	        break;
                    	    default:
                    	        NoViableAltException nvae =
                    	            new NoViableAltException("", 19, 0, input);

                    	        throw nvae;

                    	    }

                    	    switch (alt19) {
                    	        case 1 :
                    	            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:109: IDENT ( ACORCHETE ( NUMERO ) CCORCHETE )?
                    	            {
                    	            match(input,IDENT,FOLLOW_IDENT_in_llamada_funcion373); 

                    	            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:114: ( ACORCHETE ( NUMERO ) CCORCHETE )?
                    	            int alt18=2;
                    	            int LA18_0 = input.LA(1);

                    	            if ( (LA18_0==ACORCHETE) ) {
                    	                alt18=1;
                    	            }
                    	            switch (alt18) {
                    	                case 1 :
                    	                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:115: ACORCHETE ( NUMERO ) CCORCHETE
                    	                    {
                    	                    match(input,ACORCHETE,FOLLOW_ACORCHETE_in_llamada_funcion375); 

                    	                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:125: ( NUMERO )
                    	                    // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:126: NUMERO
                    	                    {
                    	                    match(input,NUMERO,FOLLOW_NUMERO_in_llamada_funcion378); 

                    	                    }


                    	                    match(input,CCORCHETE,FOLLOW_CCORCHETE_in_llamada_funcion381); 

                    	                    }
                    	                    break;

                    	            }


                    	            }
                    	            break;
                    	        case 2 :
                    	            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:148: NUMERO
                    	            {
                    	            match(input,NUMERO,FOLLOW_NUMERO_in_llamada_funcion387); 

                    	            }
                    	            break;
                    	        case 3 :
                    	            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:156: CADENA
                    	            {
                    	            match(input,CADENA,FOLLOW_CADENA_in_llamada_funcion390); 

                    	            }
                    	            break;
                    	        case 4 :
                    	            // C:\\Users\\Jose\\workspace\\prac6\\src\\main\\java\\PL\\prac6\\CParser.g:30:163: CARACTER
                    	            {
                    	            match(input,CARACTER,FOLLOW_CARACTER_in_llamada_funcion392); 

                    	            }
                    	            break;

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop20;
                        }
                    } while (true);


                    }
                    break;

            }


            match(input,CPARENTESIS,FOLLOW_CPARENTESIS_in_llamada_funcion399); 

            match(input,SEPARADOR,FOLLOW_SEPARADOR_in_llamada_funcion401); 

            }

        }
        catch (RecognitionException e) {
          throw e;}
         
        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "llamada_funcion"

    // Delegated rules


 

    public static final BitSet FOLLOW_cabecera_in_entrada46 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entrada48 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_cabecera55 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_set_in_cabecera60 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_APARENTESIS_in_cabecera66 = new BitSet(new long[]{0x0000180000000000L});
    public static final BitSet FOLLOW_VOID_in_cabecera69 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_llamada_variable_in_cabecera74 = new BitSet(new long[]{0x0000000000840000L});
    public static final BitSet FOLLOW_COMA_in_cabecera77 = new BitSet(new long[]{0x0000080000000000L});
    public static final BitSet FOLLOW_llamada_variable_in_cabecera79 = new BitSet(new long[]{0x0000000000840000L});
    public static final BitSet FOLLOW_CPARENTESIS_in_cabecera85 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ALLAVE_in_cabecera87 = new BitSet(new long[]{0x0000280030021000L});
    public static final BitSet FOLLOW_cuerpo_in_cabecera89 = new BitSet(new long[]{0x0000280030021000L});
    public static final BitSet FOLLOW_CLLAVE_in_cabecera92 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_TIPO_in_llamada_variable98 = new BitSet(new long[]{0x0000000010000100L});
    public static final BitSet FOLLOW_ASTERISCO_in_llamada_variable101 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_IDENT_in_llamada_variable105 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_ACORCHETE_in_llamada_variable108 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_CCORCHETE_in_llamada_variable110 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_operacion118 = new BitSet(new long[]{0x0000003000000300L});
    public static final BitSet FOLLOW_set_in_operacion125 = new BitSet(new long[]{0x0000010010000000L});
    public static final BitSet FOLLOW_set_in_operacion135 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_APARENTESIS_in_comparacion145 = new BitSet(new long[]{0x0000014010000000L});
    public static final BitSet FOLLOW_reglas_in_comparacion147 = new BitSet(new long[]{0x0000020000800040L});
    public static final BitSet FOLLOW_set_in_comparacion150 = new BitSet(new long[]{0x0000014010000000L});
    public static final BitSet FOLLOW_reglas_in_comparacion158 = new BitSet(new long[]{0x0000020000800040L});
    public static final BitSet FOLLOW_CPARENTESIS_in_comparacion162 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_reglas170 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_NUMERO_in_reglas173 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_operacion_in_reglas175 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_COMPARADORES_in_reglas178 = new BitSet(new long[]{0x0000010010000000L});
    public static final BitSet FOLLOW_IDENT_in_reglas181 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NUMERO_in_reglas184 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_operacion_in_reglas186 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NOT_in_reglas192 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_IDENT_in_reglas195 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_cond_aritmetico_in_reglas198 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_cond_aritmetico205 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_COMPARADORES_in_cond_aritmetico207 = new BitSet(new long[]{0x0000010000000000L});
    public static final BitSet FOLLOW_NUMERO_in_cond_aritmetico209 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_INTERROGANTE_in_cond_aritmetico211 = new BitSet(new long[]{0x0000010000000000L});
    public static final BitSet FOLLOW_NUMERO_in_cond_aritmetico213 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_DOSPUNTOS_in_cond_aritmetico215 = new BitSet(new long[]{0x0000010000000000L});
    public static final BitSet FOLLOW_NUMERO_in_cond_aritmetico217 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_WHILE_in_bucle223 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_comparacion_in_bucle225 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IF_in_condicion231 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_comparacion_in_condicion233 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_bucle_in_sentencia240 = new BitSet(new long[]{0x0000280030001020L});
    public static final BitSet FOLLOW_condicion_in_sentencia242 = new BitSet(new long[]{0x0000280030001020L});
    public static final BitSet FOLLOW_ALLAVE_in_sentencia246 = new BitSet(new long[]{0x0000280030001000L});
    public static final BitSet FOLLOW_cuerpo_in_sentencia248 = new BitSet(new long[]{0x0000280030021000L});
    public static final BitSet FOLLOW_CLLAVE_in_sentencia251 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_cuerpo_in_sentencia254 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sentencia_in_cuerpo262 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_asignacion_in_cuerpo266 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_definicion_in_cuerpo269 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_llamada_funcion_in_cuerpo271 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_BREAK_in_cuerpo273 = new BitSet(new long[]{0x0000040000000000L});
    public static final BitSet FOLLOW_SEPARADOR_in_cuerpo275 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_asignacion282 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_IGUAL_in_asignacion284 = new BitSet(new long[]{0x0000010010006000L});
    public static final BitSet FOLLOW_set_in_asignacion286 = new BitSet(new long[]{0x0000043000000300L});
    public static final BitSet FOLLOW_set_in_asignacion297 = new BitSet(new long[]{0x0000010010006000L});
    public static final BitSet FOLLOW_set_in_asignacion307 = new BitSet(new long[]{0x0000043000000300L});
    public static final BitSet FOLLOW_SEPARADOR_in_asignacion319 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_TIPO_in_definicion325 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_IDENT_in_definicion327 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_COMA_in_definicion330 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_IDENT_in_definicion332 = new BitSet(new long[]{0x0000040000000000L});
    public static final BitSet FOLLOW_SEPARADOR_in_definicion335 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_llamada_funcion341 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_APARENTESIS_in_llamada_funcion343 = new BitSet(new long[]{0x0000010010806000L});
    public static final BitSet FOLLOW_IDENT_in_llamada_funcion347 = new BitSet(new long[]{0x0000000000840010L});
    public static final BitSet FOLLOW_ACORCHETE_in_llamada_funcion349 = new BitSet(new long[]{0x0000010000000000L});
    public static final BitSet FOLLOW_NUMERO_in_llamada_funcion352 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_CCORCHETE_in_llamada_funcion355 = new BitSet(new long[]{0x0000000000840000L});
    public static final BitSet FOLLOW_NUMERO_in_llamada_funcion361 = new BitSet(new long[]{0x0000000000840000L});
    public static final BitSet FOLLOW_CADENA_in_llamada_funcion364 = new BitSet(new long[]{0x0000000000840000L});
    public static final BitSet FOLLOW_CARACTER_in_llamada_funcion366 = new BitSet(new long[]{0x0000000000840000L});
    public static final BitSet FOLLOW_COMA_in_llamada_funcion370 = new BitSet(new long[]{0x0000010010006000L});
    public static final BitSet FOLLOW_IDENT_in_llamada_funcion373 = new BitSet(new long[]{0x0000000000840010L});
    public static final BitSet FOLLOW_ACORCHETE_in_llamada_funcion375 = new BitSet(new long[]{0x0000010000000000L});
    public static final BitSet FOLLOW_NUMERO_in_llamada_funcion378 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_CCORCHETE_in_llamada_funcion381 = new BitSet(new long[]{0x0000000000840000L});
    public static final BitSet FOLLOW_NUMERO_in_llamada_funcion387 = new BitSet(new long[]{0x0000000000840000L});
    public static final BitSet FOLLOW_CADENA_in_llamada_funcion390 = new BitSet(new long[]{0x0000000000840000L});
    public static final BitSet FOLLOW_CARACTER_in_llamada_funcion392 = new BitSet(new long[]{0x0000000000840000L});
    public static final BitSet FOLLOW_CPARENTESIS_in_llamada_funcion399 = new BitSet(new long[]{0x0000040000000000L});
    public static final BitSet FOLLOW_SEPARADOR_in_llamada_funcion401 = new BitSet(new long[]{0x0000000000000002L});

}